functionName:為函式命名,當函式型態為函式陳述式,則必須命名。
函式裡面宣告的變數:為區域變數,僅對函式內部有效。
參數:函式可依照輸入的參數不同,產生不同的結果。
有關函式表達式及函式陳述式可參考此篇
function functionName(parameter) {
var localVariable = '區域變數';
console.log(this, localVariable); // This、區域變數
return '附加一段' + parameter; // 回傳、參數
}
var data = functionName('參數');// 呼叫函式
console.log(data);
var functionC = function functionName() {
console.log(functionC);
console.log(functionName);
}
functionC();
console.log(functionC);
console.log(functionName);
console.log(functionC);
console.log(functionName);}
console.log(functionC);
console.log(functionName);
console.log(functionC);
console.log(functionName);
出現錯誤訊息:functionName is not defined,因為函式表達式的函式名稱只供該表達式調用,無法給其他函式使用。
var num = 1;
var giveMeMoney = function giveMoreMoney(coin) {
num += 1;
console.log('執行 giveMeMoney', num, coin);
return coin > 100 ? coin : giveMoreMoney(num * coin);
};
console.log(giveMeMoney(30));
結果:
function functionName() {
console.log("呼叫成功");
};
functionName(); //呼叫成功
(function functionName2() {
console.log("呼叫成功2");
}()); //呼叫成功2
functionName2(); //出現錯誤訊息:functionName2 is not defined
(function () {
console.log("匿名函式呼叫成功");
}()); //匿名函式呼叫成功
*填入參數*
(function (參數輸出) {
console.log(參數輸出);
})('我要呼叫'); //我要呼叫
(function (output) {
console.log(output);
return output;
})('input'); //input
(function (output) {
console.log('123');
return output;
})('input'); //123
var result = (function (output) {
console.log('123');
return output;
})('input'); //123
console.log(result);//input
var a = {}; 把變數a的值(物件的address)當成參數帶入立即函式內
(function (參數b) {
參數b.person = 'TOM';
})(a);
console.log(a); //{person: 'TOM'}
(function (參數c) {
console.log(參數c.person); //TOM,因為取相同的值(物件的address)當成參數。
})(a);
延伸:
(function (參數b) {
參數b.person = 'TOM';
})(window);
(function (參數c) {
console.log(person); //TOM
})();
延伸解:
function add(a, b) {
console.log(a + b)
}
add(1, 2)
上方會出現3的結果,是因為function add執行了裡面的console.log。
function add(a, b) {
return a + b
}
add(1, 2); //無結果。
console.log(add(1, 2)); //3
var x = add;
console.log(x); //ƒ add(a, b) {return a + b}
console.log(x(1, 2)); //3
參考: